﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using SIGERP_Entidades;
using SIGERP_Negocio;

namespace SIGERP_Web
{
    public partial class frmReclamosCliente : System.Web.UI.Page
    {
        
        protected void Page_Load(object sender, EventArgs e)
        {

            DataTable dt;
            lblMensaje.Visible = false;
            divIntervenciones.Visible = false;
            divResolucion.Visible = false;

            if (Session["Cliente"] != null)
            {
                Cliente cliente = new Cliente();
                List<Reclamo> reclamos;
                cliente = (Cliente)Session["Cliente"];
                lblApYNo.Text = cliente.apellido.ToString() + " " + cliente.nombre.ToString();
                lblDocumento.Text = cliente.tipodocumento.descripcion.ToString() + " " + cliente.numero_documento.ToString();
                lblSexo.Text = cliente.sexo.ToString();

                dt = new DataTable();
                dt.Columns.Add("Número de reclamo", typeof(int));
                dt.Columns.Add("Tipo", typeof(string));
                dt.Columns.Add("SubTipo", typeof(string));
                dt.Columns.Add("Fecha de ingreso", typeof(string));
                dt.Columns.Add("Departamento", typeof(string));
                dt.Columns.Add("Fecha tentativa", typeof(string));
                dt.Columns.Add("Estado", typeof(string));

                reclamos = Reclamos.buscarReclamosEnCursoPorClienteWEB(cliente);
                foreach (Reclamo r in reclamos)
                {
                    String fecha_tent = "";
                    if (r.fecha_tentativa != null) fecha_tent = ((DateTime)r.fecha_tentativa).ToShortDateString();
                    dt.Rows.Add(r.id, r.subtiporeclamo.tipo.descripcion, r.subtiporeclamo.descripcion, r.fecha_ingreso.ToShortDateString(), r.departamento_actual.descripcion, fecha_tent, r.estadoreclamo.descripcion);
                }
                Grilla.DataSource = dt;
                Grilla.DataBind();
            }

            if (Session["Reclamo"] != null)
            {
                Reclamo reclamo = new Reclamo();
                Cliente clie = new Cliente();
                reclamo = (Reclamo)Session["Reclamo"];

                clie = Clientes.buscarCliente(reclamo.cliente.cod_cliente);
                lblApYNo.Text = clie.apellido.ToString() + " " + clie.nombre.ToString();
                lblDocumento.Text = clie.tipodocumento.descripcion.ToString() + " " + clie.numero_documento.ToString();
                lblSexo.Text = clie.sexo.ToString();

                dt = new DataTable();
                dt.Columns.Add("Número de reclamo", typeof(int));
                dt.Columns.Add("Tipo", typeof(string));
                dt.Columns.Add("SubTipo", typeof(string));
                dt.Columns.Add("Fecha de ingreso", typeof(string));
                dt.Columns.Add("Departamento", typeof(string));
                dt.Columns.Add("Estado", typeof(string));

                // En el caso que se ingrese por numero de reclamo, V=vamos a tener solo un reclamo en la grilla.
                dt.Rows.Add(reclamo.id, reclamo.subtiporeclamo.tipo.descripcion, reclamo.subtiporeclamo.descripcion, reclamo.fecha_ingreso.ToShortDateString(), reclamo.departamento_actual.descripcion, reclamo.estadoreclamo.descripcion);
                Grilla.DataSource = dt;
                Grilla.DataBind();
            }

        }


        protected void Grilla_SelectedIndexChanged1(object sender, EventArgs e)
        {
                lblMensaje.Visible = false;
                List<Intervencion> intervenciones;
                GridViewRow filaseleccionada = this.Grilla.SelectedRow;
                Reclamo rec = Reclamos.GetOne(Convert.ToInt32(filaseleccionada.Cells[1].Text));
                
                intervenciones = Intervenciones.DevolverIntervervencionesPorReclamo(rec);
                divIntervenciones.Visible = true;

                if (intervenciones.Count != 0)
                {
                    GrillaIntervenciones.Visible = true;
                    lblMensaje.Visible = false;
                    lblMensaje.Text = rec.id.ToString();
                    DataTable dt = new DataTable();
                    dt.Columns.Add("Fecha de intervencion", typeof(string));
                    dt.Columns.Add("Departamento", typeof(string));

                    foreach (Intervencion i in intervenciones)
                    {
                        dt.Rows.Add(i.fecha_intervencion.ToShortDateString(), i.departamento.descripcion);
                    }
                    GrillaIntervenciones.DataSource = dt;
                    GrillaIntervenciones.DataBind();

                    if (rec.fecha_resolucion != null)
                    {
                    divResolucion.Visible = true;
                    LblResolucion.Text = rec.descripcion_resolucion;
                    }
                    else
                    {
                        divResolucion.Visible = false;
                    }
                    
                }
                else
                {
                    lblMensaje.Visible = true;
                    lblMensaje.Text = "No se realizó ninguna intervención sobre el reclamo.";
                    GrillaIntervenciones.Visible = false;
                }

        }
    }
}